package com.bamboowind.producer.simple;

import com.bamboowind.producer.util.RabbitMqUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;


import java.io.IOException;

/**
 * 简单模式：消息生产者
 *
 * @author cpw
 */
public class ProducerHelloWorld {

    /**
     * 简单模式的队列名字
     */
    private final static String QUEUE_NAME = "hello,rabbitmq";

    public static void main(String[] args) throws IOException {

        //3.创建连接Connection
        Connection connection = RabbitMqUtils.getConnection();

        //4.创建Channel
        Channel channel = connection.createChannel();

        //5.创建队列(简单模式没有用到交换机，所以直接创建队列)
        /**
         * queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
         *参数:
         *    1.queue:队列名称
         *    2.durable:是否持久化，当mq重启以后是否还在
         *    3.exclusive:是否独占，只能有一个消费者监听这个队列；当Connection关闭后是否删除队列
         *    4.autoDelete:是否自动删除，当没有Consumer的时候是否自动删除
         *    5.argument:参数
         * */
        channel.queueDeclare(QUEUE_NAME, true, false, false, null);

        //6.发送消息
        /**
         * basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)
         * 参数:
         *      1.exchange:交换机名称。简单模式下交换机会使用默认的 ""
         *      2.routingKey:路由名称
         *      3.props:配置信息
         *      4.body:发送消息数据
         * */
        String body = "hello rabbitmq!!!";
        channel.basicPublish("", QUEUE_NAME, null, body.getBytes());

        //7.释放资源
        RabbitMqUtils.closeConnectionAndChannel(connection, channel);
    }
}
